# 用装饰器完成符号的实参传递，根据符号输出两个数的最终结果
# 如果一个装饰器需要携带参数进行使用
# 那么必须要在装饰器的外面再嵌套一层函数来完成参数的接收

def mark(flag):  # flag用来接收装饰器的实参 +/-
    def out_func(fn):  # fn--被装饰函数的引用eg:add/sub
        def inner_func(num1, num2):  # 接收被装饰函数实参
            if flag == "+":
                print(f"你输入的装饰器实参是{flag}，加法计算中")
                result = fn(num1, num2)
            elif flag == "-":
                print(f"你输入的装饰器实参是{flag}，减法计算中")
                result = fn(num1, num2)
            else:
                result = "您输入的运算符号不在范围之内"
            return result

        return inner_func

    return out_func


@mark("+")
def add(a, b):
    result = a + b
    return result


@mark("-")
def sub(a, b):
    result = a - b
    return result


print(add(1, 2))
print(sub(3, 2))
